package clientc2;

import java.util.HashMap;

import caretakerv2.EnregistreurImpl;
import originatorv2.Arreter;
import originatorv2.CollerOriginator;
import originatorv2.CopierOriginator;
import originatorv2.CouperOriginator;
import originatorv2.DemarrerOriginator;
import originatorv2.Rejouer;
import originatorv2.SaisirOriginator;
import originatorv2.SelectionnerOriginator;
import receiver.MiniEditeurImpl;
import command.Coller;
import command.Command;
import command.Copier;
import command.Couper;
import command.SaisirTexte;
import command.Selectionner;

public class EditeurV2 {

	private MiniEditeurImpl miniEditeur;

	private invokerv2.IhmImplV2 ihm;

	private HashMap<String, Command> lesCommandes;

	private caretakerv2.Enregistreur enreg;


	public void initialize(){

		miniEditeur = new MiniEditeurImpl();
		lesCommandes = new HashMap<String, Command>();
		ihm = new invokerv2.IhmImplV2();
		enreg = new caretakerv2.EnregistreurImpl();
		
		lesCommandes.put("Selectionner", new Selectionner(miniEditeur,ihm));
		lesCommandes.put("Copier", new Copier(miniEditeur));
		lesCommandes.put("Coller", new Coller(miniEditeur));
		lesCommandes.put("Couper", new Couper(miniEditeur));
		lesCommandes.put("Saisir", new SaisirTexte(miniEditeur,ihm));
		
		lesCommandes.put("Demarrer", new DemarrerOriginator((EnregistreurImpl) enreg));
		lesCommandes.put("Rejouer", new Rejouer(enreg));
		lesCommandes.put("Arreter", new Arreter(enreg));
		
		lesCommandes.put("SaisirOriginator", new SaisirOriginator(enreg, lesCommandes.get("Saisir")));
		lesCommandes.put("CopierOriginator", new CopierOriginator(enreg, lesCommandes.get("Copier")));
		lesCommandes.put("CollerOriginator", new CollerOriginator(enreg, lesCommandes.get("Coller")));
		lesCommandes.put("CouperOriginator", new CouperOriginator(enreg, lesCommandes.get("Couper")));
		lesCommandes.put("SelectionnerOriginator", new SelectionnerOriginator(enreg, lesCommandes.get("Selectionner")));

		ihm.setLesCommandes(lesCommandes);
		miniEditeur.addObserver(ihm);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		EditeurV2 edit = new EditeurV2();
		edit.initialize();
	}

}
